using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Charting._DataManagement
{
    /// <summary>
    /// <para>Generate Derived Airspace Geometry</para>
    /// <para>Generates airspace  geometry for associated airspace features from an imported AIXM 5.1 message.</para>
    /// <para>从导入的 AIXM 5.1 消息中为关联的空域要素生成空域几何。</para>
    /// </summary>    
    [DisplayName("Generate Derived Airspace Geometry")]
    public class GenerateDerivedAirspaceGeometry : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateDerivedAirspaceGeometry()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_airspace_features">
        /// <para>Input Airspace Features</para>
        /// <para>The input polygon feature class containing three or more airspace features, some or all of which will be used to derive more complex airspace features. The derived features will be updated in this target feature class.</para>
        /// <para>包含三个或更多空域要素的输入面要素类，其中部分或全部将用于派生更复杂的空域要素。派生要素将在此目标要素类中更新。</para>
        /// </param>
        /// <param name="_airspace_association_table">
        /// <para>Airspace Association Table</para>
        /// <para>The input table containing information about the geometric associations between two or more airspace features. The airspace relationship information stored in this table is populated through the AIXM import process.</para>
        /// <para>包含有关两个或多个空域要素之间几何关联的信息的输入表。此表中存储的空域关系信息是通过 AIXM 导入过程填充的。</para>
        /// </param>
        public GenerateDerivedAirspaceGeometry(object _in_airspace_features, object _airspace_association_table)
        {
            this._in_airspace_features = _in_airspace_features;
            this._airspace_association_table = _airspace_association_table;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "Generate Derived Airspace Geometry";

        public override string CallName => "aviation.GenerateDerivedAirspaceGeometry";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_airspace_features, _airspace_association_table, _updated_airspace_features, _airspace_part_features];

        /// <summary>
        /// <para>Input Airspace Features</para>
        /// <para>The input polygon feature class containing three or more airspace features, some or all of which will be used to derive more complex airspace features. The derived features will be updated in this target feature class.</para>
        /// <para>包含三个或更多空域要素的输入面要素类，其中部分或全部将用于派生更复杂的空域要素。派生要素将在此目标要素类中更新。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Airspace Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_airspace_features { get; set; }


        /// <summary>
        /// <para>Airspace Association Table</para>
        /// <para>The input table containing information about the geometric associations between two or more airspace features. The airspace relationship information stored in this table is populated through the AIXM import process.</para>
        /// <para>包含有关两个或多个空域要素之间几何关联的信息的输入表。此表中存储的空域关系信息是通过 AIXM 导入过程填充的。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Airspace Association Table")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _airspace_association_table { get; set; }


        /// <summary>
        /// <para>Updated Derived Airspace Features</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Derived Airspace Features")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _updated_airspace_features { get; set; }


        /// <summary>
        /// <para>Airspace Parts</para>
        /// <para>The feature class to be updated with airspace features derived from the Input Airspace Features parameter.</para>
        /// <para>要使用派生自输入空域要素参数的空域要素进行更新的要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Airspace Parts")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _airspace_part_features { get; set; } = null;


        public GenerateDerivedAirspaceGeometry SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}